package org.larkdoc.dao;

import java.util.List;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.larkdoc.model.entity.DocRelease;

/**
 * 文档版本Mapper接口类
 * 
 * @author  zhangpeijun[zhangpeijun1024@qq.com]
 * @version  [v1.0.1, 2017年10月17日]
 * @see  [相关类/方法]
 * @since  [产品/模块版本]
 */
@Mapper
public interface DocReleaseMapper {
    
    /**
     * 根据ID删除数据
     * @param id
     * @return
     * 
     * @returns int
     * @see [类、类#方法、类#成员]
     * @author  zhangpeijun[zhangpeijun1024@qq.com]<br/>
     *          2017年10月17日下午12:01:55
     */
    int deleteByPrimaryKey(Integer id);
    
    /**
     * 新增数据
     * @param record
     * @return
     * 
     * @returns int
     * @see [类、类#方法、类#成员]
     * @author  zhangpeijun[zhangpeijun1024@qq.com]<br/>
     *          2017年10月17日下午12:06:16
     */
    int insert(DocRelease record);
    
    /**
     * 新增记录，只记录对象非空属性
     * @param record
     * @return
     * 
     * @returns int
     * @see [类、类#方法、类#成员]
     * @author  zhangpeijun[zhangpeijun1024@qq.com]<br/>
     *          2017年10月17日下午12:10:36
     */
    int insertSelective(DocRelease record);
    
    /**
     * 根据ID查询数据
     * @param id
     * @return
     * 
     * @returns DocRelease
     * @see [类、类#方法、类#成员]
     * @author  zhangpeijun[zhangpeijun1024@qq.com]<br/>
     *          2017年10月17日下午12:13:12
     */
    DocRelease selectByPrimaryKey(Integer id);
    
    /**
     * 根据ID更新记录，只更新参数中非空的属性
     * @param record
     * @return
     * 
     * @returns int
     * @see [类、类#方法、类#成员]
     * @author  zhangpeijun[zhangpeijun1024@qq.com]<br/>
     *          2017年10月17日下午12:15:46
     */
    int updateByPrimaryKeySelective(DocRelease record);
    
    /**
     * 根据ID更新记录
     * @param record
     * @return
     * 
     * @returns int
     * @see [类、类#方法、类#成员]
     * @author  zhangpeijun[zhangpeijun1024@qq.com]<br/>
     *          2017年10月17日下午12:18:34
     */
    int updateByPrimaryKey(DocRelease record);
    
    /**
     * 检测文档版本是否存在
     * @param record
     * @return
     * 
     * @returns int
     * @see [类、类#方法、类#成员]
     * @author  zhangpeijun[zhangpeijun1024@qq.com]<br/>
     *          2017年10月17日下午12:28:17
     */
    int checkExists(DocRelease record);
    
    /**
     * 根据文档ID获取已发布版本
     * @param docId
     * @param account
     * @return
     * 
     * @returns List<DocRelease>
     * @see [类、类#方法、类#成员]
     * @author  zhangpeijun[zhangpeijun1024@qq.com]<br/>
     *          2017年10月17日下午12:28:34
     */
    List<DocRelease> getDocReleasesByDocId(@Param("docId") Integer docId, @Param("account") String account);
    
    /**
     * 根据文档id和版本号获取文档版本信息
     * @param docId
     * @param versionNo
     * @return
     * 
     * @returns DocRelease
     * @see [类、类#方法、类#成员]
     * @author  zhangpeijun[zhangpeijun1024@qq.com]<br/>
     *          2017年10月17日下午12:28:48
     */
    DocRelease getDocReleasesByDocIdAndVersion(@Param("docId") Integer docId, @Param("versionNo") String versionNo);
    
    /**
     * 获取历史版本信息
     * @param docId
     * @return
     * 
     * @returns List<DocRelease>
     * @see [类、类#方法、类#成员]
     * @author  zhangpeijun[zhangpeijun1024@qq.com]<br/>
     *          2017年10月17日下午12:29:21
     */
    List<DocRelease> getHistory(@Param("docId") Integer docId);
}